
Git hooks는 Git 저장소에서 특정 이벤트(커밋, 푸시, 머지 등)가 발생할 때 자동으로 실행되는 스크립트입니다. 로컬(클라이언트)과 서버 측(리모트 리포지토리)에서 각각 동작하는 훅이 있으며, 개발 워크플로우 자동화와 규칙 강제에 자주 사용됩니다. 주요 특징 및 사용법 - 위치: 각 저장소의 .git/hooks 디렉터리에 기본 예제들이 들어 있고, 사용하려면 해당 이름의 실행 가능한 스크립트를 두면 됩니다. (또는 core.hooksPath로 훅 경로 변경 가능) - 실행 방식: 쉘 스크립트, 파이썬, 노드 등 아무 실행 파일이면 됨. 실행 권한이 있어야 함. - 로컬 훅 예시: - pre-commit: 커밋이 만들어지기 전에 실행(코드 스타일 검사, 린트, 테스트 등). 검사 실패 시 커밋 중단 가능. - commit-msg: 커밋 메시지 내용을 검증(티켓 번호 포함 여부, 메시지 포맷 등). - prepare-commit-msg: 커밋 메시지를 자동 수정·추가. - pre-push: 푸시하기 전에 테스트나 빌드 수행. - post-merge, post-checkout: 병합이나 체크아웃 후 의존성 설치나 빌드 트리거. - 서버(리모트) 훅 예시: - pre-receive / update: 푸시되는 변경을 서버에서 검증해 거부 가능(권한, 브랜치 정책, CI 연동 등). - post-receive: 푸시가 완료된 후 배포나 알림 트리거. - 협업과 버전 관리: .git/hooks는 기본적으로 Git에 포함되지 않아 팀 전체에 자동 배포되지 않습니다. 팀 차원의 통일을 위해 Husky, Lefthook 같은 도구를 사용하거나 레포에 훅 스크립트를 두고 설치 스크립트로 복사하도록 구성합니다. - 보안 고려사항: 훅은 로컬에서 임의 코드 실행하므로 신뢰할 수 없는 저장소의 훅을 그대로 실행하면 위험합니다. - 예시(개념): pre-commit 훅 안에 "npm test" 또는 "eslint ." 같은 명령을 넣어 테스트/린트가 실패하면 커밋을 중단하게 할 수 있습니다. 요약하면, Git hooks는 저장소 이벤트에 따라 자동으로 실행되는 스크립트로서 코드 품질 검사, 메시지 규칙 강제, CI/CD 트리거 등 개발 과정의 자동화와 정책 적용에 유용한 도구입니다.